/**
 * @properties={typeid:35,uuid:"B768B1AD-8468-4872-9705-3F7F043E79F6",variableType:6}
 */
var fPorcComision = null;

/**
 * @properties={typeid:35,uuid:"D3A2B14A-EA09-4E01-A67F-6CC463EF797E",variableType:6}
 */
var aux_red = null;

/**
 * @properties={typeid:35,uuid:"FDE011D9-FF60-442B-A231-7151E5A07004",variableType:4}
 */
var es_preview = null;

/**
 * @properties={typeid:35,uuid:"9044CD1E-66FA-4052-A9E8-5D73083D7B49",variableType:4}
 */
var found = 0;

/**
 * @properties={typeid:35,uuid:"4B388A26-8D7B-4B0F-91AF-08451B6D82DB",variableType:6}
 */
var vporc_iva = 0;

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"0221C396-2F53-4E7B-B156-DDEAC1F4379A"}
 */
function confirmar(event) {
	totalizar()
 
if (globals.gtotal_comprob <= 0)
 {
 	globals.gMensaje="El importe a liquidar es erróneo = " + globals.gtotal_comprob
	globals.gMensajes()
	return;  //  11/04/2012
 }
	
//var cuantos=liq_cabecera_to_liq_detalle.getSize()  //  11/04/2012
var cuantos=databaseManager.getFoundSetCount(liq_cabecera_to_liq_detalle) //  11/04/2012
if (cuantos > globals.liq_tope_reng) //  18/04/2012 limita reng. de Liq por espacio el imprimir
{
 	globals.gMensaje="Cantidad de renglones permitido en la liquidacion " + globals.liq_tope_reng
	globals.gMensajes()
	return; 
}
for (var i = 1 ; i <= cuantos; i++) //  11/04/2012
{		 
	liq_cabecera_to_liq_detalle.setSelectedIndex(i);
	if ((liq_cabecera_to_liq_detalle.tarifa_referencia <= 0) ||
		(liq_cabecera_to_liq_detalle.tarifa_referencia == null))
	{
	 	globals.gMensaje="Debe informar tarifa de referencia en el renglon " + i
		globals.gMensajes()
		return; 
 	}
	if (liq_cabecera_to_liq_detalle.tarifa_referencia < liq_cabecera_to_liq_detalle.tarifa) // 26/04/2012 
	{
		globals.gMensaje="Tarifa de referencia en el renglon " + i + " es menor que la tarifa. Confirma?"
		var resp=globals.DIALOGS.showQuestionDialog('Liquidacion',  globals.gMensaje,  "Si", "No" )
		if (resp == 'Si')
		{
			liq_cabecera_to_liq_detalle.tarifa_referencia=liq_cabecera_to_liq_detalle.tarifa
			if (liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.tarifa_por_viaje != 1)
		  	{
			  	var aux_importe_ref = globals.operacion(liq_cabecera_to_liq_detalle.neto,"*",liq_cabecera_to_liq_detalle.tarifa_referencia)
			  	liq_cabecera_to_liq_detalle.importe_referencia = globals.operacion(aux_importe_ref,"/",1000)
		  	}
		  	else
			{
			  	liq_cabecera_to_liq_detalle.importe_referencia = globals.operacion(liq_cabecera_to_liq_detalle.tarifa_referencia,"*",1)  
		  	}
			totalizar(); 
		}
		else
		{
			globals.gMensaje="Debe cambiar Tarifa de referencia en el viaje " + liq_cabecera_to_liq_detalle.liq_detalle_to_viajes.viaje_id 
			globals.gMensajes()
			return;
		}	
	}	
}

// si es letra A pero liquida viajes de exportación el IVA se pone en 0
if (letra=="A" && globals.gopcion_viajes_exportacion==1)
	{
		vporc_iva=0
	}
	viajes_exportacion=globals.gopcion_viajes_exportacion
	 //// buscar numeracion de liquidación   codigo=11
	var fs_nro_rec = databaseManager.getFoundSet(controller.getServerName(),'numeracion_cl')
	fs_nro_rec.loadAllRecords()
	fs_nro_rec.find()
	fs_nro_rec.sucursal=sucursal
	fs_nro_rec.letra=letra
	fs_nro_rec.cod_comprobante=11   //fac_cabecera_to_tipo_doc.cod_doc_asociado en fac1
	var found=fs_nro_rec.search()
	if (found != 1)
     {	
	   globals.gMensaje = 'Sucursal o Letra o Tipo de comprobante incorrectos al buscar numeracion'
	   globals.gMensajes();
     }
     else
     {	
	  fs_nro_rec.setSelectedIndex(1)
	// 12/10/2010 ==================================================
	  	var nro_aux= fs_nro_rec.ultimo_numero + 1  
	  	tipo_doc=6
		globals.duplicacion_liq_cabecera(letra,sucursal,nro_aux);
		if (globals.gfilas!=0)  // si es cero, la factura no existe
		{ // ya existe , lo rechaza
			globals.gMensaje = 'Error - Ya existe la Liquidacion ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000');
			globals.gMensajes();
			return false;
		}
	// 12/10/2010 ==================================================
	  
	  fs_nro_rec.ultimo_numero = fs_nro_rec.ultimo_numero + 1
      
	 ////guardar mas datos de liq_cabecera  // es la tabla del form
     	 nro_liquidacion=fs_nro_rec.ultimo_numero
     // sucursal =  es lookup value de rec_cabecera
     // fecha       se llena en iniciar
     // cliente_id  se llena con la valuelist
      	subtotal1=globals.gtotal_comprob
      	subtotal0=globals.gtotal_referencia  // 11/04/2012
      	bonificacion=globals.operacion(subtotal0,"-",subtotal1) // 11/04/2012
      	
      // TODO ver de donde se iniicializan las sgte 2 variables ???
		var aux_porc_iva = vporc_iva
		//var aux_porc_comision = 7
		//var aux_importe_gastos = 15 // se anuló para que lo ingresen x pantalla
		// operacion  25/10
		//comision= Math.round(subtotal1 * aux_porc_comision / 100 * 100) / 100;
		aux_red = globals.operacion(subtotal1,"*",fPorcComision)  //27/10/2010
		comision = globals.operacion(aux_red,"/",100)   //27/10/2010
		//gastos=aux_importe_gastos - lo ingresan x pantalla
		// operacion  25/10
		//neto= globals.redondeo(subtotal1 - (comision + gastos))
		aux_red = globals.operacion(subtotal1,"-",comision)  //27/10/2010
		neto= globals.operacion(aux_red,"-",gastos)  //27/10/2010
		// operacion  25/10
		//iva1_imp= Math.round(neto * aux_porc_iva / 100 * 100) / 100;
		aux_red = globals.operacion(neto,"*",aux_porc_iva)  //27/10/2010
		iva1_imp= globals.operacion(aux_red,"/",100)  //27/10/2010
		iva1_porc=aux_porc_iva
		tipo_doc=6
		// operacion  25/10
		//total=globals.redondeo(neto + iva1_imp);
		total= globals.operacion(neto,"+",iva1_imp)
		importe_en_letras=globals.nro_a_letra(total)
		
		
	// regrabar los viajes liquidados con estado = 3 
		for (var i = 1 ; i <= forms.liquidacion_viajes_a_liq.controller.getMaxRecordIndex(); i++)
	 {		 
	  forms.liquidacion_viajes_a_liq.controller.setSelectedIndex(i)
	  if (forms.liquidacion_viajes_a_liq.marca_liq==1)
	  {
	//regrabar lo que está marcado con estado = 3
	  	forms.liquidacion_viajes_a_liq.estado_id = 3
	  	forms.liquidacion_viajes_a_liq.marca_liq = 0
	  }
	 }
     //// grabar el pago en ctacte prov // desde la relacion liq_cabecera-proveedor + proveedor-ctactepr 
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.newRecord()
		
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.cod_mov=6
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.cond_pago_id=0
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.fecha_mov=fecha
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.fecha_vto=fecha
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.itc=0
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.neto=neto
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.iva_porc=  aux_porc_iva
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.iva=iva1_imp
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.iva_percep=0
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.importe=total
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.letra=letra
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.nro_factura=nro_liquidacion
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.provincia_id
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.retecion_ing_brutos=0
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.retencion_ganancias=0
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.saldo=total
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.sucursal=sucursal
		liq_cabecera_to_proveedor.proveedor_to_ctacte_pr.tasa_iva_id=1  // ???
	//// salvar todo
	var estado=databaseManager.saveData()
	if (estado==true)
	{
		databaseManager.refreshRecordFromDatabase(foundset, 0) // deja el indice correctamente
		databaseManager.refreshRecordFromDatabase(foundset.liq_cabecera_to_liq_detalle,-1)
		databaseManager.refreshRecordFromDatabase(foundset.liq_cabecera_to_ctacte_pr,0)
		//globals.gMensaje ='Liquidación ' + '\nSucursal ' + sucursal + '\n' + 'Letra ' + letra    + '\nNumero ' + nro_comprobante +  '\nGenerado correctamente' + '\nImprime:'
		globals.gMensaje ='Liquidación ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_liquidacion,'00000000') +  ' Generada correctamente' + ' Imprime:'
		//plugins.dialogs.showInfoDialog('Generador de Facturas y Notas',  globals.gMensaje,  "OK")
		//var resp = plugins.dialogs.showQuestionDialog( 'Impresion',  '¿Desea imprimir?' ,  'Si', 'No')
		var resp=globals.DIALOGS.showQuestionDialog('Recibo',  globals.gMensaje,  "Si", "No" )
		if (resp == 'Si')
		{
			es_preview = 1 //26/07/2010
			forms.liq_cabecera_imp.controller.showPrintPreview(true)
			//forms.rec_cabecera_imp.controller.showPrintPreview(true)	
		}
		else  //26/07/2010
		{ //26/07/2010
		iniciar()
		} //26/07/2010
	}
	else
	{
		globals.gMensaje ='Error - La Liquidación No fue generada '
		globals.DIALOGS.showInfoDialog('Carga de Liquidación',  globals.gMensaje,  "OK")
		cancelar()
	}
	}
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"67334A64-6171-48EB-B4A3-6CB9D47B093E"}
 */
function cancelar(event) {
	databaseManager.rollbackEditedRecords()
	databaseManager.setAutoSave(true)
	iniciar();
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"6836E8E4-1D40-4248-B774-2D1F6CBC9F02"}
 */
function elige_viajes(event) {
	// llamar al otro form para seleccionar los viajes a liquidar
	if (proveedor_id == 0 || proveedor_id == null)
	{
		globals.gMensaje = 'Debe elegir el fletero'
	  	globals.gMensajes();
	  	return
	}
	application.showFormInDialog(forms.liquidacion_viajes_a_liq,50,300,1080,400,'Viajes a liquidar',true,false,'viajes_a_liq',true);
	// vuelve del anterior form con las columnas de liq_detalle dadas de alta
	totalizar()
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"405FE3A1-55B5-4364-AD57-F2A500F30F55"}
 */
function borra_detalle(event) {
	// TODO dar de baja por la relación si hay un reg seleccionado
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} firstShow form is shown first time after load
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"5CFDB065-2B7B-4804-AF9B-0531AA465EDC"}
 */
function iniciar(firstShow, event) {
	globals.autosaveoff();
	controller.newRecord(false);
	fecha = new Date();  
	globals.gtotal_comprob=0.00;
	//  proveedor_id=0  //20/04/2012
	globals.gopcion_viajes_exportacion=0
	es_preview = 0; //26/07/2010
	fPorcComision = globals.gPorcenComision  // se muestra siempre el estándar
	}

/**
 *
 * @properties={typeid:24,uuid:"73495485-C048-4E52-9541-ED898C161CCD"}
 */
function totalizar() {
	globals.gtotal_comprob=0.00
	globals.gtotal_referencia=0.00  //  11/04/2012
	for ( var i = 1 ; i <= liq_cabecera_to_liq_detalle.getSize(); i++ )
	{
		liq_cabecera_to_liq_detalle.setSelectedIndex(i)
		//globals.gtotal_comprob+= liq_cabecera_to_liq_detalle.importe
		globals.gtotal_comprob=globals.operacion(globals.gtotal_comprob,"+",liq_cabecera_to_liq_detalle.importe) //27/10/2010
		globals.gtotal_referencia=globals.operacion(globals.gtotal_referencia,"+",liq_cabecera_to_liq_detalle.importe_referencia)   //  11/04/2012
	}
	subtotal1=globals.gtotal_comprob
      	subtotal0=globals.gtotal_referencia  // 11/04/2012
      	bonificacion=globals.operacion(subtotal0,"-",subtotal1) // 11/04/2012
      	
      // TODO ver de donde se iniicializan las sgte 2 variables ???
		var aux_porc_iva = vporc_iva
		var aux_red = globals.operacion(subtotal1,"*",fPorcComision)  //27/10/2010
		comision = globals.operacion(aux_red,"/",100)   //27/10/2010
		aux_red = globals.operacion(subtotal1,"-",comision)  //27/10/2010
		neto= globals.operacion(aux_red,"-",gastos)  //27/10/2010
		aux_red = globals.operacion(neto,"*",aux_porc_iva)  //27/10/2010
		iva1_imp= globals.operacion(aux_red,"/",100)  //27/10/2010
		iva1_porc=aux_porc_iva
		total= globals.operacion(neto,"+",iva1_imp)
}

/**
 * Handle hide window.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"2D9CE9F3-ABAB-4DE5-BD57-4399CE15F9FE"}
 */
function salir_liq(event) {
	if (es_preview== 0) //26/07/2010
	{ //26/07/2010
	var resp = globals.DIALOGS.showQuestionDialog( 'Confirma',  '¿Seguro que desea salir?' ,  'Si', 'No')
	if (resp == 'Si')
	{
		databaseManager.rollbackEditedRecords()
		databaseManager.setAutoSave(true)
		return true   //11/01/2012 - corrección onHide con respuesta "No" - evita cabeceras vacías
		//globals.Ira_Principal()
	}
	else
	{
		return false //11/01/2012 - corrección onHide con respuesta "No" - evita cabeceras vacías
	}
	} //26/07/2010
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"C614870C-7C52-44CE-958B-8A85CC036EF0"}
 */
function elige_fletero(oldValue, newValue, event) {
	globals.gtotal_comprob=0.00
	// salvar_fletero: porque perdia en codigo de fletero en el newRecord
	var salvar_fletero=proveedor_id
	// rollback: porque al cambiar de cliente dejaba los movs. del anterior
	databaseManager.rollbackEditedRecords()
	// newRecord: porque al traia datos del untilmo recibo de ese cliente en vez de crear uno
	controller.newRecord(false);
	proveedor_id=salvar_fletero
	globals.marca_primer_find = 0
	// letra y sucursal podrían tener que ser calculados dependiendo del tipo_iva del
	// proveedor
	//letra="A"
	switch( liq_cabecera_to_proveedor.tipo_iva_id )
{
case 1: 
		letra="A"
		vporc_iva=globals.gporc_iva_fletes
		break;
case 6: 
		letra="B"
		vporc_iva=0
		break;
case 8: 
		letra="A"
		vporc_iva=globals.gporc_iva_fletes
		break;
default:
		letra="X"
		vporc_iva=0
}
	sucursal=globals.gSucursal
	fecha=new Date;
	if (liq_cabecera_to_proveedor.viajes_propios==1)
		{
			globals.gMensaje = 'Los viajes propios no se liquidan'
	   		globals.gMensajes()
	   		return false
		}
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"F15026B2-E21E-4396-9EF2-5DB172A20D68"}
 */
function onDataChange_gastos(oldValue, newValue, event) {
	totalizar()
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"0C7349AF-ECFB-48C2-A375-DF5EA8E4446A"}
 */
function onDataChange_porc_comis(oldValue, newValue, event) {
	totalizar()
	return true
}
